home *** CD-ROM | disk | FTP | other *** search
/ PC Pro 2005 June (DVD) / DPPRO0605DVD.iso / Install / program files / Borland / BDS / 3.0 / Demos / Delphi.Net / CLR / FileViewer / FileViewer.dpr < prev   
Encoding:
Text File  |  2004-10-22  |  6.9 KB  |  285 lines

  1. (*********************************************************)
  2. (*      Delphi for .NET File Viewer demo                 *)
  3. (*      Written by:  Chua Chee Wee, Singapore            *)
  4. (*      chuacw@rightsecurity.biz                         *)
  5. (*      Right Security Consultants                       *)
  6. (*      http://www.rightsecurity.biz                     *)
  7. (*                                                       *)
  8. (*********************************************************)
  9. program FileViewer;
  10.  
  11.  
  12. {%DelphiDotNetAssemblyCompiler '$(SystemRoot)\microsoft.net\framework\v1.1.4322\System.Design.dll'}
  13. {%DelphiDotNetAssemblyCompiler '$(SystemRoot)\microsoft.net\framework\v1.1.4322\System.Windows.Forms.dll'}
  14.  
  15. uses
  16.   System.Windows.Forms,
  17.   System.Drawing,
  18.   System.ComponentModel,
  19.   System.Collections,
  20.   System.IO,
  21.   System.ComponentModel.Design,
  22.   Classes,
  23.   SysUtils,
  24.   System.Reflection,
  25.   System.Diagnostics;
  26.  
  27. [assembly: AssemblyTitle('File Viewer')]
  28. [assembly: AssemblyDescription('File Viewer for .NET')]
  29. [assembly: AssemblyCompany('Right Security Consultants, Singapore')]
  30. [assembly: AssemblyCopyright('')]
  31. [assembly: AssemblyVersion('1.0.*')]
  32.  
  33. type
  34.  
  35.   TByteViewer = System.ComponentModel.Design.ByteViewer;
  36.  
  37.   TMenuItem = class(System.Windows.Forms.MenuItem)
  38.   public
  39.     constructor Create;
  40.   end;
  41.  
  42.   TfrmFileViewer = class(System.Windows.Forms.Form)
  43.     Label1: System.Windows.Forms.Label;
  44.     MainMenu1: System.Windows.Forms.MainMenu;
  45.     miFile: TMenuItem;
  46.     miFileOpen: TMenuItem;
  47.     N1: TMenuItem;
  48.     miFileExit: TMenuItem;
  49.     miView: TMenuItem;
  50.     miViewAuto: TMenuItem;
  51.     miViewAnsi: TMenuItem;
  52.     miViewHex: TMenuItem;
  53.     miViewUnicode: TMenuItem;
  54.     Viewer: TByteViewer;
  55.     VScrollBar: System.Windows.Forms.ScrollBar;
  56.     procedure ViewAutoClick(Sender: TObject; e: EventArgs);
  57.     procedure ViewAnsiClick(Sender: TObject; e: EventArgs);
  58.     procedure ViewHexClick(Sender: TObject; e: EventArgs);
  59.     procedure ViewUnicodeClick(Sender: TObject; e: EventArgs);
  60.     procedure FileOpenClick(Sender: TObject; e: EventArgs);
  61.     procedure FileCloseClick(Sender: TObject; e: EventArgs);
  62.     procedure LoadViewerFile(const AFilename: string='');
  63.   protected
  64.     { Private declarations }
  65.     procedure InitState;
  66.     procedure FormResize(Sender: TObject; e: EventArgs);
  67.     procedure UncheckAll;
  68.     procedure SetFile(const Filename: string);
  69.   public
  70.     { Public declarations }
  71.     constructor Create;
  72.   end;
  73.  
  74. var
  75.   frmFileViewer: TfrmFileViewer;
  76.  
  77. constructor TMenuItem.Create;
  78. begin
  79.   inherited Create;
  80.   RadioCheck := True;
  81. end;
  82.  
  83. constructor TfrmFileViewer.Create;
  84. begin
  85.   inherited;
  86.   InitState;
  87. end;
  88.  
  89. procedure TfrmFileViewer.LoadViewerFile(const AFilename: string='');
  90. begin
  91.  if (AFilename='') or (AFilename=nil) then
  92.   SetFile(ParamStr(0)) else
  93.   SetFile(AFilename);
  94. end;
  95.  
  96. procedure TfrmFileViewer.InitState;
  97. begin
  98.  
  99.   MaximumSize := System.Drawing.Size.Create(640, 519);
  100.   MinimumSize := MaximumSize;
  101.  
  102.   Text := 'File Viewer';
  103.  
  104.   Viewer := TByteViewer.Create;
  105.   Viewer.Dock := System.Windows.Forms.DockStyle.Fill;
  106.   AutoScroll := True;
  107.  
  108.   Controls.Add(Viewer);
  109.  
  110.   MainMenu1 := System.Windows.Forms.MainMenu.Create;
  111.   miFile := TMenuItem.Create;
  112.   miFileOpen := TMenuItem.Create;
  113.   N1 := TMenuItem.Create;
  114.   miFileExit := TMenuItem.Create;
  115.  
  116.   miView := TMenuItem.Create;
  117.   miView.Enabled := False;
  118.  
  119.   miViewAuto := TMenuItem.Create;
  120.   miViewAnsi := TMenuItem.Create;
  121.   miViewHex := TMenuItem.Create;
  122.   miViewUnicode := TMenuItem.Create;
  123.  
  124.   with MainMenu1 do
  125.   begin
  126.     Name := 'MainMenu1';
  127.     Left := 78;
  128.     Top := 14;
  129.   end;
  130.   with miFile do
  131.   begin
  132.     Name := 'File1';
  133.     Text := 'File';
  134.   end;
  135.   with miFileOpen do
  136.   begin
  137.     Name := 'Open1';
  138.     Text := 'Open...';
  139.     add_click(FileOpenClick);
  140.   end;
  141.   with N1 do
  142.   begin
  143.     Name := 'N1';
  144.     Text := '-';
  145.   end;
  146.   with miFileExit do
  147.   begin
  148.     Name := 'Exit1';
  149.     Text := 'E&xit';
  150.     add_click(FileCloseClick);
  151.   end;
  152.   with miView do
  153.   begin
  154.     Name := 'View1';
  155.     Text := 'View';
  156.   end;
  157.   with miViewAuto do
  158.   begin
  159.     Name := 'Auto1';
  160.     Text := 'Auto';
  161.     add_click(ViewAutoClick);
  162.   end;
  163.   with miViewAnsi do
  164.   begin
  165.     Name := 'Ansi1';
  166.     Text := '&Ansi';
  167.     add_click(ViewAnsiClick);
  168.   end;
  169.   with miViewHex do
  170.   begin
  171.     Name := 'Hex1';
  172.     Text := '&Hex';
  173.     add_click(ViewHexClick);
  174.   end;
  175.   with miViewUnicode do
  176.   begin
  177.     Name := 'Unicode1';
  178.     Text := '&Unicode';
  179.     add_click(ViewUnicodeClick);
  180.   end;
  181.  
  182.   MainMenu1.MenuItems.Add(miFile);
  183.   miFile.MenuItems.Add(miFileOpen);
  184.   miFile.MenuItems.Add(N1);
  185.   miFile.MenuItems.Add(miFileExit);
  186.  
  187.   MainMenu1.MenuItems.Add(miView);
  188.   miView.MenuItems.Add(miViewAuto);
  189.   miView.MenuItems.Add(miViewAnsi);
  190.   miView.MenuItems.Add(miViewHex);
  191.   miView.MenuItems.Add(miViewUnicode);
  192.  
  193.   miViewAuto.Checked := True;
  194.  
  195.   Menu := MainMenu1;
  196.  
  197.   if ParamCount=0 then
  198.    LoadViewerFile(ParamStr(0)) else
  199.    LoadViewerFile(ParamStr(1));
  200. end;
  201.  
  202. procedure TfrmFileViewer.FormResize(Sender: TObject; e: EventArgs);
  203. begin
  204.   Viewer.Dock := System.Windows.Forms.DockStyle.Fill;
  205.   Viewer.Update;
  206. end;
  207.  
  208. procedure TfrmFileViewer.FileOpenClick(Sender: TObject; e: EventArgs);
  209. var
  210.  OpenDialog: OpenFileDialog;
  211. begin
  212.  OpenDialog := OpenFileDialog.Create;
  213.  OpenDialog.Filter := 'All files (*.*)|*.*';
  214.  if OpenDialog.ShowDialog=System.Windows.Forms.DialogResult.Ok then
  215.    begin
  216.     SetFile(OpenDialog.Filename);
  217.    end;
  218. end;
  219.  
  220. procedure TfrmFileViewer.FileCloseClick(Sender: TObject; e: EventArgs);
  221. begin
  222.  Close;
  223. end;
  224.  
  225. procedure TfrmFileViewer.ViewAutoClick(Sender: TObject; e: EventArgs);
  226. begin
  227.  UncheckAll;
  228.  miViewAuto.Checked := True;
  229.  try // will throw exception if nothing/no file has been displayed/loaded.
  230.   Viewer.SetDisplayMode(DisplayMode.Auto);
  231.  except
  232.  end;
  233. end;
  234.  
  235. procedure TfrmFileViewer.ViewAnsiClick(Sender: TObject; e: EventArgs);
  236. begin
  237.  UncheckAll;
  238.  miViewAnsi.Checked := True;
  239.  try
  240.   Viewer.SetDisplayMode(DisplayMode.Ansi);
  241.  except
  242.  end;
  243. end;
  244.  
  245. procedure TfrmFileViewer.ViewHexClick(Sender: TObject; e: EventArgs);
  246. begin
  247.  UncheckAll;
  248.  miViewHex.Checked := True;
  249.  try
  250.   Viewer.SetDisplayMode(DisplayMode.Hexdump);
  251.  except
  252.  end;
  253. end;
  254.  
  255. procedure TfrmFileViewer.ViewUnicodeClick(Sender: TObject; e: EventArgs);
  256. begin
  257.  UncheckAll;
  258.  miViewUnicode.Checked := True;
  259.  try
  260.   Viewer.SetDisplayMode(DisplayMode.Unicode);
  261.  except
  262.  end;
  263. end;
  264.  
  265. procedure TfrmFileViewer.UncheckAll;
  266. begin
  267.  miViewAuto.Checked := False;
  268.  miViewAnsi.Checked := False;
  269.  miViewHex.Checked := False;
  270.  miViewUnicode.Checked := False;
  271. end;
  272.  
  273. procedure TfrmFileViewer.SetFile(const Filename: string);
  274. begin
  275.   Viewer.SetFile(Filename);
  276.   Text := Format('File Viewer - %s', [Filename]);
  277.   miView.Enabled := True;
  278. end;
  279.  
  280. begin
  281.   Application.EnableVisualStyles;
  282.   frmFileViewer := TfrmFileViewer.Create;
  283.   Application.Run(frmFileViewer);
  284. end.
  285.